package vo;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import util.HibernateUtil;

public class ProdutoDAO {
	public void salvarProduto(ProdutoVO produto) {

		Transaction transaction = null;

		Session session = HibernateUtil.currentSession();
		transaction = session.beginTransaction();

		session.saveOrUpdate(produto);

		transaction.commit();

	}

	@SuppressWarnings("unchecked")
	public List<ProdutoVO> consultarProdutos(ProdutoVO produto) {
		List<ProdutoVO> listaDeProdutos = new ArrayList<ProdutoVO>();

		Transaction transaction = null;

		Session session = HibernateUtil.currentSession();
		transaction = session.beginTransaction();

		Criteria criteria = session.createCriteria(ProdutoVO.class);

		if (produto.getDescricao() != null
				&& !produto.getDescricao().equals("")) {
			criteria.add(Restrictions.like("descricao", produto.getDescricao()+"%"));
		}

		listaDeProdutos = criteria.list();

		transaction.commit();
		return listaDeProdutos;
	}

	public void excluir(ProdutoVO produto) {
		Transaction transaction = null;

		Session session = HibernateUtil.currentSession();
		transaction = session.beginTransaction();

		session.delete(produto);

		transaction.commit();
	}

	public ProdutoVO obter(int idProduto) {
		ProdutoVO produto = new ProdutoVO();

		Transaction transaction = null;

		Session session = HibernateUtil.currentSession();
		transaction = session.beginTransaction();

		Criteria criteria = session.createCriteria(ProdutoVO.class);

		criteria.add(Restrictions.eq("id", idProduto));

		produto = (ProdutoVO) criteria.uniqueResult();

		transaction.commit();
		return produto;
	}

}
